import type {
  AxiosRequestConfig,
  AxiosResponse,
  InternalAxiosRequestConfig
} from 'axios'

// 针对AxiosRequestConfig配置进行扩展
export interface HYInterceptors<T = AxiosResponse> {
  requestSuccessFn?: (
    config: InternalAxiosRequestConfig
  ) => InternalAxiosRequestConfig
  requestFailureFn?: (err: any) => any
  responseSuccessFn?: (res: T) => T
  responseFailureFn?: (err: any) => any
}
//HYRequestConfig（用户传入的配置）是 HYRequestConfig（不包含内部属性）。
//用户手动传入的请求配置（如 baseURL、timeout、headers 等
//InternalAxiosRequestConfig（Axios 内部处理后的配置）
//但拦截器需要InternalAxiosRequestConfig（因为拦截器可能访问内部属性，如 adapter
export interface HYRequestConfig<T = AxiosResponse> extends AxiosRequestConfig {
  interceptors?: HYInterceptors<T>
}
